#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    QPushButton *openClose = new QPushButton;
    openClose->setParent(this);
    openClose->setText("Open");
    bool Flag = 1;

    QPushButton *newWin = new QPushButton("newWin", this);
    newWin->move(100, 0);

    setFixedSize(600, 400);//设置固定窗口大小
    setWindowTitle("Can I Help You?");//设置窗口标题

    connect(openClose, &QPushButton::clicked, this, [=]()mutable{
        //Lambda表达式中传递的值默认是只读的，如果想要改变这个值，可以加上mutable，这时可以改变该变量的拷贝
        if(Flag == 1){
            openClose->setText("Close");
            Flag = 0;
        }else {
            openClose->setText("Open");
            Flag = 1;
        }

    });

    connect(newWin, &QPushButton::clicked, [=]()mutable{
        if(Flag == 1){
            //新建一个窗口对象，其中的this制定了新窗口的父对象是MainWindow，在销毁MainWindow时也会销毁子对象，即该窗口对象
            dialog = new Dialog(this);

            //modal属性决定了show()应该将弹出的dialog设置为模态还是非模态
            dialog->setModal(false);//默认情况下该属性为false并且show()弹出的窗口是非模态的
            dialog->setWindowTitle("我出来了!");
            dialog->show();//把这个属性设置为true就相当于设置的QWidget::windowModality为Qt::ApplicationModal
                           //执行exec()忽略modal这个属性，并且把弹出的dialog设置为模态的
            Flag = 0;
        }else {
            dialog->close();
            Flag = 1;
        }

    });

}

Widget::~Widget()
{
    delete ui;
}
